/*
 * Copyright (C), 2005-2018, 上海瑛麒动漫科技有限公司
 * FileName: RedisConfiguration.java
 * Author:   tianmu
 * Date:     2018年2月22日 下午2:27:24
 * Description: //模块目的、功能描述
 * History: //修改记录
 * <author>      <time>      <version>    <desc>
 * 修改人姓名             修改时间            版本号                  描述
 */
package com.sfang.common.redis.config;

import com.sfang.common.redis.sdk.RedisException;
import com.sfang.common.redis.sdk.RedisNode;

import java.util.*;

/**
 * Redis配置<br>
 * Redis配置
 *
 * @author tianmu
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public class RedisClusterConfiguration {

    private Set<RedisNode> clusterNodes;

    public RedisClusterConfiguration(Collection<String> clusterNodes) {
        if (clusterNodes == null || clusterNodes.isEmpty()) {
            throw new RedisException();
        }

        this.clusterNodes = new HashSet<>(clusterNodes.size());
        for (String node : clusterNodes) {

            if(node==null||node==""||node.length()==0)
                continue;

            String[] str = node.split(":");

            RedisNode rn = new RedisNode();
            rn.setHost(str[0]);
            rn.setPort(Integer.parseInt(str[1]));
            this.clusterNodes.add(rn);
        }
    }

    /**
     * @param clusterNodes 节点之间通过分号分隔，host与post之间通过冒号分隔，形如：127.0.0.1:6377;127.0.0.1:6378;127.0.0.1:6379
     */
    public RedisClusterConfiguration(String clusterNodes) {
        this(Arrays.asList(clusterNodes.split(";")));
    }

    public Set<RedisNode> getClusterNodes() {
        return Collections.unmodifiableSet(clusterNodes);
    }

}
